#!/bin/bash

# 设置错误时停止执行
set -e

# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 配置变量 - 请根据实际情况修改
PROJECT_DIR="/root/ps5"
BACKEND_DIR="$PROJECT_DIR/backend"
VENV_DIR="$BACKEND_DIR/venv"

# 打印带颜色的信息
info() {
    echo -e "${GREEN}[INFO] $1${NC}"
}

warn() {
    echo -e "${YELLOW}[WARN] $1${NC}"
}

error() {
    echo -e "${RED}[ERROR] $1${NC}"
    exit 1
}

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    error "此脚本需要root权限运行。请使用sudo或以root用户运行。"
fi

# 停止应用服务
info "停止应用服务..."
systemctl stop app || warn "停止应用服务失败，可能服务不存在或已停止"

# 进入后端目录
cd "$BACKEND_DIR" || error "无法进入后端目录 $BACKEND_DIR"

# 激活虚拟环境
info "激活虚拟环境..."
source "$VENV_DIR/bin/activate" || error "无法激活虚拟环境"

# 运行数据库重建脚本
info "重建数据库..."
python recreate_db.py || error "数据库重建失败"

# 退出虚拟环境
deactivate

# 重启应用服务
info "重启应用服务..."
systemctl start app || error "启动应用服务失败"

# 重启Nginx
info "重启Nginx..."
systemctl restart nginx || warn "重启Nginx失败"

info "数据库重建完成！应用已重新启动。"
